package com.panasonic.web.util;

import com.panasonic.web.domain.cms.CmsUser;
import com.panasonic.web.vo.ForgetPasswordVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Date;

/**
 * @className: JavaMailService
 * @description: TODO 类描述
 * @author: laiweifeng
 * @date: 2021/11/22
 **/
@Component
public class JavaMailService {

    @Value("${spring.mail.settings.form}")
    private String form;

    @Autowired
    private JavaMailSender javaMailSender;

    public void sendForgetPasswordEmail(ForgetPasswordVo sendForgetPasswordEmail) throws MessagingException {
        // 构建一个邮件对象
        MimeMessage mimeMailMessage = javaMailSender.createMimeMessage();
//        SimpleMailMessage message = new SimpleMailMessage();
        MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMailMessage,true,"utf-8");
        // 设置邮件主题
        messageHelper.setSubject("重置密码验证码");
        // 设置邮件发送者，这个跟application.yml中设置的要一致
        messageHelper.setFrom(form);
        // 设置邮件接收者，可以有多个接收者，中间用逗号隔开，以下类似
        // message.setTo("10*****16@qq.com","12****32*qq.com");
        messageHelper.setTo(sendForgetPasswordEmail.getEmail());
        // 设置邮件抄送人，可以有多个抄送人
//        message.setCc("12****32*qq.com");
        // 设置隐秘抄送人，可以有多个
//        message.setBcc("7******9@qq.com");
        // 设置邮件发送日期
        messageHelper.setSentDate(new Date());
        // 设置邮件的正文
        messageHelper.setText(getMessage(sendForgetPasswordEmail),true);
        // 发送邮件
        javaMailSender.send(mimeMailMessage);

    }


    public String getMessage(ForgetPasswordVo sendForgetPasswordEmail) {
        String s1= "<div style='margin-bottom:18px;'>尊敬的松下认定维修店技术支持系统用户,您好!</div>";
        String s2= "<div style='margin-bottom:18px;'>这是一封密码重置邮件，如果是您本人操作，请复制以下验证码验证,<span style='font-weight:bold;'>30分钟内有效：</span></div>";
        String s3= "<div>验证码:</div>";
        String s4= "<div style='font-weight:bold;margin-bottom:18px;'>"+sendForgetPasswordEmail.getCode()+"</div>";
        String s5= "<div style='margin-bottom:18px;'>如果您并没有执行此操作，您可以选择忽略此邮件。</div>";
        String s6= "<div style='font-style:italic;'>注：请不要回复此邮件。</div>";
        return s1+s2+s3+s4+s5+s6;
//        StringBuilder sb = new StringBuilder();
//        sb.append("<div>尊敬的松下认定维修店技术支持系统用户,您好!</div>");
//        sb.append("\r\n");
//
//        sb.append("这是一封密码重置邮件，如果是您本人操作，请复制以下验证码验证,30分钟内有效：");  //加粗
//        sb.append("\r\n");
//        sb.append("验证码: ");
//        sb.append("\r\n");
//        sb.append(sendForgetPasswordEmail.getCode()); //加粗
//        sb.append("\r\n");
//        sb.append("如果您并没有执行此操作，您可以选择忽略此邮件。");
//        sb.append("\r\n");
//        sb.append("注：请不要回复此邮件。"); //斜体
//        return sb.toString();
    }

    public void sendCreateUserEmail(CmsUser user,String password,int type) {
        // 构建一个邮件对象
        SimpleMailMessage message = new SimpleMailMessage();
        if(type==1){
            message.setSubject("松下认定维修店技术支持系统账号创建成功通知");
        }else{
            message.setSubject("松下认定维修店技术支持系统账号修改成功通知");
        }
        // 设置邮件发送者，这个跟application.yml中设置的要一致
        message.setFrom(form);
        // 设置邮件接收者，可以有多个接收者，中间用逗号隔开，以下类似
        // message.setTo("10*****16@qq.com","12****32*qq.com");
        message.setTo(user.getEmail());
        // 设置邮件抄送人，可以有多个抄送人
//        message.setCc("12****32*qq.com");
        // 设置隐秘抄送人，可以有多个
//        message.setBcc("7******9@qq.com");
        // 设置邮件发送日期
        message.setSentDate(new Date());
        // 设置邮件的正文
        message.setText(getMessageUserCreate(user,password,type));
        // 发送邮件
        javaMailSender.send(message);

    }
    public String getMessageUserCreate(CmsUser user,String password,int type) {
        StringBuilder sb = new StringBuilder();
        sb.append("尊敬的松下认定维修店技术支持系统用户,您好!");
        sb.append("\r\n");
        if(type==1){
            sb.append("您的系统信息已修改为：");
        }else{
            sb.append("您的系统信息已修改为：");
        }
        sb.append("\r\n");
        sb.append("用户名: ");
        sb.append(user.getUsername());
        sb.append("\r\n");
        if(password!=""){
            sb.append("密码: ");
            sb.append(password);
            sb.append("\r\n");
//            sb.append("请妥善保管好您的密码.");
//            sb.append("\r\n");
        }
        sb.append("您可以通过以下链接登录松下认定维修店系统。");
        sb.append("\r\n");
        sb.append("https://prosystem.panasonic.cn/wxd/#/login");
        sb.append("  （登录网址）");
        sb.append("\r\n");
        sb.append("谢谢");
        sb.append("\r\n");
        sb.append("注：请不要回复此邮件。");
        return sb.toString();
    }

}
